import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

/* Layout */
import Layout from '@/layout';
import goodsRouter from './modules/goods';
import shopRouter from './modules/shop';
import supplier from './modules/supplier';
// import h5manage from './modules/h5manage'
// import stock from './modules/stock'
import system from './modules/system';
// import member from './modules/member'
import outwarehouse from './modules/outwarehouse';
import inwarehouse from './modules/inwarehouse';
import procure from './modules/procure';
import storage from './modules/storage';
import tms from './modules/tms';
import finance from './modules/finance';
import alertmanage from './modules/alertmanage';
import genericGoods from './modules/genericGoods';
import shopManagement from './modules/shopManagement';
import report from './modules/report';

/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
import error_500 from '@/views/500.vue';
export const constantRoutes = [
	{
		path: '/login',
		component: () => import('@/views/login/index'),
		hidden: true
	},
	{
		path: '/error_500',
		name: 'error_500',
		component: error_500,
		hidden: true
	},
	{
		path: '/networkError',
		name: 'networkError',
		component: () => import('@/views/networkError'),
		hidden: true
	},
	{
		path: '/404',
		component: () => import('@/views/404'),
		hidden: true
	},

	{
		path: '/',
		component: Layout,
		redirect: '/dashboard',
		meta: { title: '首页', icon: 'app' },
		children: [
			{
				path: 'dashboard',
				name: 'Dashboard',
				component: () => import('@/views/dashboard/index'),
				meta: { title: '首页', icon: 'app' }
			}
		]
	}
];
// 拆分动态路由
export const asyncRoutes = [
	goodsRouter,
	genericGoods,
	supplier,
	// h5manage,
	// stock,
	// member,
	storage,
	inwarehouse,
	outwarehouse,
	procure,
	shopRouter,
	report,
	finance,
	tms,
	alertmanage,
	shopManagement,
	system,
];
const createRouter = () =>
	new Router({
		// mode: 'history', // require service support
		scrollBehavior: () => ({ y: 0 }),
		routes: constantRoutes
	});

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
	const newRouter = createRouter();
	router.matcher = newRouter.matcher; // reset router
}

export default router;
